;; ---
;; 1.6
;; Simulation:

(squareroot 9)

(squrt-iter 1.0 9)

(new-if (good-enough? 1.0 9)
        1.0
        (sqrt-iter (improve 1.0 9)
                   9)))

(new-if (< (abs (- (square 1.0) 9)) 0.000001)
        1.0
        (sqrt-iter (average 1.0 (/ 9 1.0))
                   9))

(new-if (< (abs (- (* 1.0 1.0) 9)) 0.000001)
        1.0
        (sqrt-iter (  (/ (+ 1.0 9) 2))
                   9))

;; The next step will be expanding the sqrt-iter, and that results in an infinite loop. Since new-if is a 
;; procedure and not a macro, the sqrt-iter parameter will be expanded before going into new-if, so the
;; bottom of recursion is never reached.
;;
;; If new-if were substituted by IF, that is a macro, the condition would be checed before going into sqrt-iter


